-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here

local map = vim.keymap.set
map("n", "gh", "^", { desc = "go to start of line" })
map("n", "gl", "$", { desc = "go to end of line" })
map({ "n", "v" }, "<C-a>", "ggVG", { desc = "select all" })
map({ "n", "v" }, "1", "%", { desc = "like %" })
map({ "n", "v" }, "2", "$", { desc = "like $" })
map({ "n", "v" }, "3", "^", { desc = "like ^" })
map("", "<C-v>", '"+p', { desc = "ctrl+v in normal and visual" })
map("i", "<C-v>", "<C-r>+", { desc = "ctrl+v in insert" })
map("v", "<C-c>", '"+y', { desc = "ctrl+c in visual" })
-- vim.keymap.set({"n", "v"}, "d", '"_d', { desc = "Delete without yanking" })
-- vim.keymap.set({"n", "v"}, "D", '"_D', { desc = "Delete line without yanking" })
vim.keymap.set({ "n", "v" }, "c", '"_c', { desc = "Change without yanking" })
vim.keymap.set({ "n", "v" }, "C", '"_C', { desc = "Change line without yanking" })
vim.keymap.set("n", "x", '"_x', { desc = "Delete char without yanking" })
-- 定义临时高亮组的颜色（这里用黄色背景+黑色文字为例）
vim.api.nvim_set_hl(0, "TempHighlight", {
  bg = "#FFFF00", -- 黄色背景
  fg = "#000000", -- 黑色文字
  bold = true, -- 加粗
})
vim.keymap.set("n", "zz", function()
  -- 1. 执行原生居中
  vim.cmd("normal! zz")

  -- 2. 创建命名空间和高亮
  local ns = vim.api.nvim_create_namespace("temp_highlight")
  vim.api.nvim_buf_add_highlight(
    0, -- 当前缓冲区
    ns, -- 命名空间
    "TempHighlight", -- 使用自定义高亮组
    vim.fn.line(".") - 1, -- 行号（Lua 从 0 开始）
    0, -- 起始列
    -1 -- 结束列（-1 表示整行）
  )

  -- 3. 3秒后清除高亮
  vim.defer_fn(function()
    vim.api.nvim_buf_clear_namespace(0, ns, 0, -1)
  end, 1000)
end, { desc = "Center with temporary highlight" })
